package com.parcial.data.fachadas;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.parcial.data.entidades.Pregunta;
import com.parcial.data.entidades.Respuesta;
import com.parcial.data.util.Campo;
import com.parcial.data.util.Clave;

public class FachadaPregunta extends FachadaAbstracta<Pregunta> {

	private static FachadaPregunta fachadaPregunta;
	
	public static FachadaPregunta getFachadaPregunta() {
		if(fachadaPregunta == null) {
			fachadaPregunta = new FachadaPregunta();
			System.out.println("fachada2");
		}
		return fachadaPregunta;
	}
	
	private FachadaPregunta() {
		System.out.println("fachada");
	}
	
	@Override
	protected String obtenerNombreTabla() {
		return Pregunta.class.getSimpleName();
	}
	
	@Override
	protected String obtenerOrderString() {
		Clave auxClave = new Clave();
		auxClave.setColumnas(Pregunta.columnasClave());
		return auxClave.toOrderString();
	}

	@Override
	protected List<Campo> obtenerCampos(Pregunta pregunta) {
		List<Campo> campos = new ArrayList<Campo>();
		campos.add(new Campo(Integer.class, pregunta.getNroPregunta()));
		campos.add(new Campo(String.class, pregunta.getPregunta()));
		campos.add(new Campo(String.class, pregunta.getCorrecta()));
		return campos;
	}

	@Override
	protected List<Pregunta> convertirRS(ResultSet rs) {
		List<Pregunta> pregs = new ArrayList<Pregunta>();
		try {
			while (rs.next()) {
				Pregunta preg = new Pregunta();
				preg.setNroPregunta(rs.getInt("nroPregunta"));
				preg.setPregunta(rs.getString("pregunta"));
				preg.setCorrecta(rs.getString("correcta"));
				
				FachadaRespuesta fachadaRespuesta = FachadaRespuesta.getFachadaRespuesta();
				Clave campos = new Clave("nroPreguntaFk");
				campos.setValores(preg.getNroPregunta());
				
				List<Respuesta> respuestasDeLaPregunta = fachadaRespuesta.obtenerListaPorCampos(campos);
				
				for(Respuesta resp: respuestasDeLaPregunta) {
					resp.setPregunta(preg);
				}
				
				preg.setRespuestas(respuestasDeLaPregunta);
				
				pregs.add(preg);
			}
		} catch (Exception e) {
			System.out.println("Error al obtener la lista de preguntas");
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
		return pregs;
	}

}
